App Open
warning
This is the documentation for the Advanced API. Most developers should use our Simplified API (documented in App Open), which comes with several built-in features such as:
- Automatic ad loading
- Retries for failed requests
- Simplified lifecycle management
Only use the Advanced API if you need fine-grained control over the ad loading and presentation lifecycle.
The Advanced API provides direct access to individual AppOpen
instances, giving you complete control over when and how ads are loaded and displayed.
Create an AppOpen instance
- Kotlin
- Java
val appOpen = AppOpen.create(activity, "<placement-id>")
AppOpen appOpen = AppOpen.create(activity, "<placement-id>");
Register ad callbacks
- Kotlin
- Java
appOpen.listener = object : AppOpen.Listener {
override fun onLoaded(loadResult: LoadResult) {
Log.d("AppOpen", "App Open loaded!")
}
override fun onFailedToLoad(loadError: LoadError, loadResult: LoadResult?) {
Log.d("AppOpen", "App Open failed to load. Reason: ${loadError.message}")
}
override fun onShowed() {
Log.d("AppOpen", "App Open shown!")
}
override fun onFailedToShow(showError: ShowError) {
Log.d("AppOpen", "App Open failed to show. Reason: ${showError.message}")
}
override fun onDismissed() {
Log.d("AppOpen", "App Open dismissed!")
}
override fun onImpression(impressionData: ImpressionData) {
Log.d("AppOpen", "App Open impression, with revenue: ${impressionData.revenue}")
}
}
appOpen.setListener(new AppOpen.Listener() {
@Override
public void onLoaded(@NonNull LoadResult loadResult) {
Log.d("AppOpen", "App Open loaded!");
}
@Override
public void onFailedToLoad(@NonNull LoadError loadError, @Nullable LoadResult loadResult) {
Log.d("AppOpen", "App Open failed to load. Reason: " + loadError.getMessage());
}
@Override
public void onShowed() {
Log.d("AppOpen", "App Open shown!");
}
@Override
public void onFailedToShow(@NonNull ShowError showError) {
Log.d("AppOpen", "App Open failed to show. Reason: " + showError.getMessage());
}
@Override
public void onDismissed() {
Log.d("AppOpen", "App Open dismissed!");
}
@Override
public void onImpression(@NonNull ImpressionData impressionData) {
Log.d("AppOpen", "App Open impression, with revenue: " + impressionData.getRevenue());
}
});
Load an ad
- Kotlin
- Java
appOpen.load()
appOpen.load();
Show an ad
- Kotlin
- Java
if (appOpen.isReady) {
appOpen.show(activity, "app-open-ad-space")
}
if (appOpen.isReady()) {
appOpen.show(activity, "app-open-ad-space");
}
Complete example
- Kotlin
- Java
AppOpenAdvancedSample.kt
import android.app.Activity
import android.os.Bundle
import android.util.Log
import android.widget.Button
import com.etermax.xmediator.core.api.AppOpen
import com.etermax.xmediator.core.api.entities.*
class AppOpenAdvancedSample : Activity() {
private var appOpen: AppOpen? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_app_open_advanced)
findViewById<Button>(R.id.button_load).setOnClickListener {
appOpen?.destroy()
appOpen = AppOpen.create(this, "<placement-id>").apply {
listener = appOpenListener
load()
}
}
findViewById<Button>(R.id.button_show).setOnClickListener {
if (appOpen?.isReady == true) {
appOpen?.show(this, "app-open-ad-space")
}
}
}
private val appOpenListener = object : AppOpen.Listener {
override fun onLoaded(loadResult: LoadResult) {
Log.d("AppOpenAdvanced", "Loaded!")
}
override fun onFailedToLoad(loadError: LoadError, loadResult: LoadResult?) {
Log.d("AppOpenAdvanced", "Failed to load: ${loadError.message}")
}
override fun onShowed() {
Log.d("AppOpenAdvanced", "Shown!")
}
override fun onFailedToShow(showError: ShowError) {
Log.d("AppOpenAdvanced", "Failed to show: ${showError.message}")
}
override fun onDismissed() {
Log.d("AppOpenAdvanced", "Dismissed!")
}
override fun onImpression(impressionData: ImpressionData) {
Log.d("AppOpenAdvanced", "Impression with revenue: ${impressionData.revenue}")
}
}
}
AppOpenAdvancedSample.java
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.etermax.xmediator.core.api.AppOpen;
import com.etermax.xmediator.core.api.entities.*;
public class AppOpenAdvancedSample extends Activity {
private AppOpen appOpen;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_app_open_advanced);
findViewById(R.id.button_load).setOnClickListener(v -> {
if (appOpen != null) {
appOpen.destroy();
}
appOpen = AppOpen.create(this, "<placement-id>");
appOpen.setListener(appOpenListener);
appOpen.load();
});
findViewById(R.id.button_show).setOnClickListener(v -> {
if (appOpen != null && appOpen.isReady()) {
appOpen.show(this, "app-open-ad-space");
}
});
}
private final AppOpen.Listener appOpenListener = new AppOpen.Listener() {
@Override
public void onLoaded(@NonNull LoadResult loadResult) {
Log.d("AppOpenAdvanced", "Loaded!");
}
@Override
public void onFailedToLoad(@NonNull LoadError loadError, @Nullable LoadResult loadResult) {
Log.d("AppOpenAdvanced", "Failed to load: " + loadError.getMessage());
}
@Override
public void onShowed() {
Log.d("AppOpenAdvanced", "Shown!");
}
@Override
public void onFailedToShow(@NonNull ShowError showError) {
Log.d("AppOpenAdvanced", "Failed to show: " + showError.getMessage());
}
@Override
public void onDismissed() {
Log.d("AppOpenAdvanced", "Dismissed!");
}
@Override
public void onImpression(@NonNull ImpressionData impressionData) {
Log.d("AppOpenAdvanced", "Impression with revenue: " + impressionData.getRevenue());
}
};
}